package cn.tedu.erp.project.mapper;

import cn.tedu.erp.project.pojo.entity.ProduceMaterial;
import cn.tedu.erp.project.pojo.vo.ProduceMaterialListVO;
import cn.tedu.erp.project.pojo.vo.ProduceMaterialStandardVO;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface ProduceMaterialMapper {
    /**
     * 插入生产材料数据
     * @param produceMaterial 生产材料数据
     * @return 受影响的行数
     */
    int insert(ProduceMaterial produceMaterial);

    /**
     * 根据ID删除生产材料数据
     * @param id 尝试删除的生产材料数据的ID
     * @return 受影响的行数
     */
    int deleteById(Long id);

    /**
     * 修改生产材料数据
     * @param produceMaterial 封装了被修改的生产材料数据的ID和新的数据的对象
     * @return 受影响的行数
     */
    int update(ProduceMaterial produceMaterial);

    /**
     * 统计生产材料数据的数量
     * @return 生产材料数据的数量
     */
    int count();

    /**
     * 根据生产材料id统计生产材料数据的数量
     * @param id 生产材料编号
     * @return 匹配名称的生产材料数据的数量
     */
    int countById(Long id);

    /**
     * 根据名称和“非此id”统计数量,此方法将用于“有没有别的数据使用此名称”
     * @param id 生产材料ID
     * @param equipmentName 生产材料名称
     * @return
     */
    int countByNameAndNotId(Long id, String equipmentName);

    /**
     * 根据ID查询生产材料数据的详情
     * @param id 生产材料ID
     * @return 匹配的生产材料数据的详情，如果没有匹配的数据，则返回null
     */
    ProduceMaterialStandardVO getStandardById(Long id);

    /**
     * 查询生产材料列表
     * @return 生产材料列表
     */
    List<ProduceMaterialListVO> list();
}
